#include "fs/fs.h"
#include "fs/ide.h"
#include "fs/ramdisk.h"

void
ide_init(void) {
    for (int ideno = 0; ideno < MAX_IDE; ++ideno)
        ide_device_list[ideno].valid = 0;

    randisk_init(DISK0_DEVICE_NO, &ide_device_list[DISK0_DEVICE_NO]);
}

bool
ide_device_list_valid(uint32_t ideno) {
    return (ideno >= 0) && (ideno < MAX_IDE) && (ide_device_list[ideno].valid);
}

size_t
ide_device_list_size(uint32_t ideno) {
    if (ide_device_list_valid(ideno))
        return ide_device_list[ideno].size;
    else
        return 0;
}

int
ide_readSecs(uint32_t ideno, uint32_t secno, void* dst, size_t nsecs) {
    return ide_device_list[ideno].read_secs(&ide_device_list[ideno], secno, dst, nsecs);
}

int
ide_writeSecs(uint32_t ideno, uint32_t secno, const void* src, size_t nsecs) {
    return ide_device_list[ideno].write_secs(&ide_device_list[ideno], secno, src, nsecs);
}